package com.liming.service.redis;

import java.util.Set;
import java.util.concurrent.TimeUnit;

/**
 * @author liming
 * @date 2025/3/19
 */
public interface RedisClient {

    /**
     * key - value 设置
     *
     * @param key   键
     * @param value 值
     */
    void valueSet(String key, Object value);

    /**
     * key - value 设置
     *
     * @param key        健
     * @param value      值
     * @param expireTime 过期时间
     * @param unit       时间单位
     */
    void valueSet(String key, Object value, long expireTime, TimeUnit unit);

    /**
     * key - value 获取
     *
     * @param key 键
     * @return 值
     */
    Object valueGet(String key);

    /**
     * ZSet 添加
     *
     * @param key   键
     * @param value 值
     * @param score 分数
     */
    void zSetAdd(String key, Object value, double score);

    /**
     * ZSet 获取 start - end 范围内的 集合
     *
     * @param key   键
     * @param start 开始
     * @param end   结束
     * @return 集合
     */
    Set<Object> zSetRange(String key, long start, long end);

    /**
     * 根据key删除所有匹配的
     *
     * @param key 键
     * @return 删除结果
     */
    Boolean delete(String key);
}
